package br.uniriotec.pssgbd.unterhaltung.model.bo;

import java.sql.Date;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.uniriotec.pssgbd.unterhaltung.model.dao.RotuloDAO;
import br.uniriotec.pssgbd.unterhaltung.model.dao.TemperaturaDAO;
import br.uniriotec.pssgbd.unterhaltung.model.dao.TipoDAO;
import br.uniriotec.pssgbd.unterhaltung.model.entidade.Genero;
import br.uniriotec.pssgbd.unterhaltung.model.entidade.Pais;
import br.uniriotec.pssgbd.unterhaltung.model.entidade.Rotulo;
import br.uniriotec.pssgbd.unterhaltung.model.entidade.Temperatura;
import br.uniriotec.pssgbd.unterhaltung.model.entidade.Tipo;

public class RotuloBO extends BaseBO<Rotulo> {
	private static RotuloBO instancia;
	private static RotuloDAO rotuloDAO;

	public static RotuloBO getInstance() {
		if (instancia == null) {
			instancia = new RotuloBO();
			rotuloDAO = new RotuloDAO();
		}
		return instancia;
	}

	public void incluir(Rotulo rotulo) throws Exception {
		rotuloDAO.inserirRotulo(rotulo);
	}

	public List<Temperatura> listarTemperaturas() throws Exception {
		TemperaturaDAO tempDAO = new TemperaturaDAO();

		return tempDAO.obterTemperaturas();
	}

	public List<Pais> listarPaises() throws Exception {
		return PaisBO.getInstance().listarPaises();
	}

	public List<Tipo> listarTipos() throws Exception {
		TipoDAO tipoDAO = new TipoDAO();

		return tipoDAO.obterTipos();
	}

	public List<Rotulo> consultar(String nome, String marca, String codTipo,
			String codTemp) throws Exception {
		String sqlWhere = "WHERE 1 = 1 ";

		if (nome.equalsIgnoreCase("") == false) {
			sqlWhere = sqlWhere + "AND nome_rotulo LIKE '%" + nome + "%' ";
		}
		if (marca.equalsIgnoreCase("") == false) {
			sqlWhere = sqlWhere + "AND marca LIKE '%" + marca + "%' ";
		}
		if (Integer.parseInt(codTipo) != -1) {
			sqlWhere = sqlWhere + "AND cod_tipo = " + Integer.parseInt(codTipo)
					+ " ";
		}
		if (Integer.parseInt(codTemp) != -1) {
			sqlWhere = sqlWhere + "AND temperatura = "
					+ Integer.parseInt(codTemp) + " ";
		}

		return rotuloDAO.obterRotulos(sqlWhere);
	}

	@Override
	public void alterar(Rotulo rotulo) throws Exception {
		rotuloDAO.alterarRotulo(rotulo);
	}

	public static Rotulo recuperaRotulo(int id) throws ClassNotFoundException,
			SQLException {
		String sqlWhere = "Where id_rotulo = " + id;
		return rotuloDAO.obterRotulo(sqlWhere);
	}

	@Override
	public void excluir(Rotulo rotulo) throws Exception {
		rotuloDAO.removerRotulo(rotulo.getId());
	}

	@Override
	public List<Rotulo> listar() throws Exception {
		return rotuloDAO.obterRotulos();
	}
}
